Basic maintenance mode

jamesperet 9 years ago
parent
commit
296630e7cd

+ 4 - 1
app/controllers/admin_panel_controller.rb

@@ -2,6 +2,9 @@ class AdminPanelController < ApplicationController
2 2
   
3 3
   layout 'admin'
4 4
   
5
+  def maintenance_mode
6
+  end
7
+  
5 8
   def index
6 9
     redirect_to admin_dashboard_path
7 10
   end
@@ -49,7 +52,7 @@ class AdminPanelController < ApplicationController
49 52
 
50 53
     # Never trust parameters from the scary internet, only allow the white list through.
51 54
     def info_params
52
-      params.require(:info).permit(:website_name, :tagline, :contact_email, :default_language)
55
+      params.require(:info).permit(:website_name, :tagline, :contact_email, :default_language, :maintenance_mode, :maintenance_title, :maintenance_message)
53 56
     end
54 57
   
55 58
 end

+ 13 - 0
app/controllers/application_controller.rb

@@ -1,10 +1,13 @@
1 1
 class ApplicationController < ActionController::Base
2 2
   # Prevent CSRF attacks by raising an exception.
3 3
   # For APIs, you may want to use :null_session instead.
4
+
4 5
   protect_from_forgery with: :exception
5 6
   
6 7
   before_filter :config_site
7 8
   
9
+  before_filter :check_admin_mode
10
+  
8 11
   before_filter :configure_permitted_parameters, if: :devise_controller?
9 12
   
10 13
   def configure_permitted_parameters
@@ -18,4 +21,14 @@ class ApplicationController < ActionController::Base
18 21
     I18n.default_locale = @config.default_language
19 22
   end
20 23
   
24
+  protected
25
+
26
+    def check_admin_mode
27
+      if @config.maintenance_mode && controller_name != 'sessions' && !user_signed_in? && action_name != 'maintenance_mode'
28
+        redirect_to maintenance_mode_path
29
+      elsif !@config.maintenance_mode && !user_signed_in? && action_name == 'maintenance_mode'
30
+        redirect_to root_path
31
+      end
32
+    end
33
+  
21 34
 end

+ 9 - 0
app/views/admin_panel/maintenance_mode.html.erb

@@ -0,0 +1,9 @@
1
+<div class="row">
2
+	<div class="span12">
3
+		<div class="hero-unit">
4
+		  <h1><%= @config.maintenance_title %></h1>
5
+		  <p><%= @config.maintenance_message %></p>
6
+		</div>
7
+		<%= bootstrap_flash %>
8
+	</div>
9
+</div>

+ 3 - 0
app/views/admin_panel/site_config.html.erb

@@ -14,6 +14,9 @@
14 14
 			    <%= f.input :tagline, :label => (t 'admin_panel.tagline'), :input_html => { :class => 'input-xxlarge'} %>
15 15
 			    <%= f.input :default_language, collection: ["en", "pt-BR"], prompt:"Select default language",  :label => (t 'admin_panel.default_language'), hint: ("<i>* "+(t "admin_panel.language_hint")+"</i>").html_safe %>
16 16
 			    <%= f.input :contact_email, :label => (t 'admin_panel.contact_email'), :input_html => {:class => 'input-large'} %>
17
+			    <%= f.input :maintenance_mode, :label => (t 'admin_panel.maintenance_mode') %>
18
+			    <%= f.input :maintenance_title, :label => (t 'admin_panel.maintenance_title') %>
19
+			    <%= f.input :maintenance_message, :label => (t 'admin_panel.maintenance_message'), :input_html => {:class => 'input-large'}  %>
17 20
 
18 21
 			  </div>
19 22
 

+ 3 - 0
config/locales/en.yml

@@ -223,6 +223,9 @@ en:
223 223
     contact_messages: Contact Messages
224 224
     new: New
225 225
     messages: Messages
226
+    maintenance_mode: Maintenance Mode
227
+    maintenance_title: Maintenance Page Title
228
+    maintenance_message: Maintenance Page Message
226 229
   nav:
227 230
     admin_panel: Admin Panel
228 231
     account: Account

+ 3 - 0
config/locales/pt-BR.yml

@@ -225,6 +225,9 @@ pt-BR:
225 225
     contact_messages: Mensagens de Contato
226 226
     new: Nova
227 227
     messages: Mensagens
228
+    maintenance_mode: Modo de Manutenção
229
+    maintenance_title: Titulo da página de manutenção
230
+    maintenance_message: Mensagem de manutenção
228 231
   nav:
229 232
     admin_panel: Painel de Controle
230 233
     account: Conta

+ 2 - 0
config/routes.rb

@@ -3,6 +3,8 @@ RailsWebsiteTemplate::Application.routes.draw do
3 3
   resources :contact_messages, path: '/contact'
4 4
 
5 5
   resources :uploads
6
+  
7
+  get "maintenance_mode" => "admin_panel#maintenance_mode", :as => :maintenance_mode
6 8
 
7 9
   get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard
8 10
   get "admin" => "admin_panel#index"

+ 7 - 0
db/migrate/20141031021236_add_maintenance_to_infos.rb

@@ -0,0 +1,7 @@
1
+class AddMaintenanceToInfos < ActiveRecord::Migration
2
+  def change
3
+    add_column :infos, :maintenance_mode, :boolean
4
+    add_column :infos, :maintenance_title, :string
5
+    add_column :infos, :maintenance_message, :text
6
+  end
7
+end

+ 4 - 1
db/schema.rb

@@ -11,7 +11,7 @@
11 11
 #
12 12
 # It's strongly recommended that you check this file into your version control system.
13 13
 
14
-ActiveRecord::Schema.define(version: 20141024174901) do
14
+ActiveRecord::Schema.define(version: 20141031021236) do
15 15
 
16 16
   # These are extensions that must be enabled in order to support this database
17 17
   enable_extension "plpgsql"
@@ -64,6 +64,9 @@ ActiveRecord::Schema.define(version: 20141024174901) do
64 64
     t.string   "default_language"
65 65
     t.datetime "created_at"
66 66
     t.datetime "updated_at"
67
+    t.boolean  "maintenance_mode"
68
+    t.string   "maintenance_title"
69
+    t.text     "maintenance_message"
67 70
   end
68 71
 
69 72
   create_table "uploads", force: true do |t|